Tailscale 是目前最优雅的零配置内网穿透方案之一,但在 阿里云 ECS 上使用时,许多开发者会遇到一个令人抓狂的问题:
安装成功,但阿里云内网服务全部失效:DNS 不通、yum 不能用、元数据服务无法访问。
这不是你的锅,而是 阿里云与 Tailscale 的网络设计天然冲突。
本文将带你完整理解问题根源,并给出三套可稳定运行的解决方案。
🧨 一、为什么阿里云 ECS 会与 Tailscale 冲突? ​
阿里云内部服务使用的网段是:
| 服务 | IP |
|---|---|
| 内网 DNS | 100.100.2.136 / 100.100.2.138 |
| 内网镜像源 | 100.100.2.148 |
| 元数据服务 | 100.100.100.200 |
而 Tailscale 默认虚拟网段是:
1 | 100.64.0.0/10 |
覆盖范围:
1 | 100.64.0.0 – 100.127.255.255 |
你应该已经看出来了:
阿里云的 100.100.x.x 正好落在 Tailscale 的虚拟网段里 → 被 Tailscale 当成“虚拟网络流量”直接 DROP。
这导致:
- 阿里云 DNS 不通
- yum 镜像源无法访问
- 元数据服务失效
- curl 访问 100.100.x.x 全部失败
更糟的是,Tailscale 会修改 /etc/resolv.conf:
1 | nameserver 100.100.100.100 |
进一步覆盖了阿里云的 DNS 配置。
🧪 二、如何复现这个问题? ​
安装 Tailscale 后执行:
1 | curl http://100.100.100.200/latest/meta-data/ (100.100.100.200 in Bing) |
结果:
1 | curl: (7) Failed to connect |
再试 DNS:
1 | dig @100.100.2.136 aliyun.com |
结果:
1 | connection timed out; no servers could be reached |
这就是典型的 Tailscale 冲突。
🛠 三、三种稳定解决方案(按场景选择) ​
下面是三套经过大量实测的解决方案,你可以根据自己的需求选择。
🥇 方案 A:关闭 Tailscale 防火墙(最推荐) ​
适用场景:
- 只需要点对点互联
- 不需要 exit-node
- 不需要子网路由
- 想要最稳定、最省心的配置
命令:
1 | sudo tailscale up \ |
效果:
- Tailscale 不再插入 DROP 规则
- 阿里云内网服务全部恢复
- Tailscale 正常使用
- MagicDNS 不启用(可用自己的 DNS)
这是目前在阿里云 ECS 上最稳定的方式。
🥈 方案 B:使用 nodivert 模式(保留部分防火墙) ​
适用场景:
- 想保留 Tailscale 的部分安全机制
- 想继续使用 MagicDNS
命令:
1 | sudo tailscale up \ |
特点:
- 不会劫持主链路
- 阿里云内网 DNS 不再被 DROP
- MagicDNS 可用
⚠️ 注意:nodivert 模式存在 CVE-2019-14899 风险,但云环境影响较小。
🥉 方案 C:给阿里云内网服务加白名单(适合 exit-node) ​
适用场景:
- 必须使用 exit-node
- 或必须使用子网路由
1. 插入白名单规则 ​
1 | sudo iptables -I ts-input 1 -s 100.100.2.136/32 -j ACCEPT |
2. 持久化规则(systemd) ​
1 | sudo bash -c 'cat > /etc/systemd/system/fix-ts.service <<EOF |
🔍 四、如何验证冲突是否已解决? ​
1. DNS 是否恢复 ​
1 | dig @100.100.2.136 example.com |
2. yum 是否恢复 ​
1 | curl -I http://mirrors.cloud.aliyuncs.com (mirrors.cloud.aliyuncs.com in Bing) |
3. 元数据服务是否恢复 ​
1 | curl http://100.100.100.200/latest/meta-data/ (100.100.100.200 in Bing) |
如果这三个都正常 → 冲突已完全解决。
🎯 五、阿里云 ECS 最佳实践(总结) ​
| 场景 | 推荐方案 |
|---|---|
| 普通互联、最稳定 | 方案 A:netfilter-mode=off |
| 想保留 MagicDNS | 方案 B:nodivert |
| 需要 exit-node 或子网路由 | 方案 C:iptables 白名单 |
对于大多数阿里云 ECS 用户来说:
方案 A 是最干净、最稳定的选择。